首页 > 其他分享 >npm创建项目

npm创建项目

时间:2024-05-04 18:33:36浏览次数:18  
标签:npm jquery 项目 创建 js webpack 添加 babel

创建项目

  • 创建项目目录
    首先新建一个文件夹,这里存放着我们的项目。
    image

  • 创建项目文件
    这里不使用任何项目模板,相当于使用空模板。
    进入这个文件夹,再cmd中运行npm init
    然后按照提示输入package name,项目名等等。每输入一个就回车。完成之后目录下会出现一个package.json项目文件。
    我们到vscode中打开这个目录
    image

  • 创建项目入口文件
    按照package.json的提示,我们需要创建index.js。一般都是放在src文件夹下。于是我们创建这个路径。
    image
    如果是需要在浏览器中运行项目,可以再创建一个index.html,并添加入口js引用
    image

  • 添加依赖引用
    假如我们的需求是要用jquery操作dom
    添加依赖的方式是命令行中执行npm i jquery。这会将包的引用添加到项目文件

{
  "name": "npm-project",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "jquery": "^3.7.1"
  }
}
  • 使用自定义模块
    添加repeat.js文件
export default{
    repeat:function(str){
        return `${str},${str}`
    }
}

再使用这个模块

import rmodule from "./repeat"
$("body").append($(`<h1 style="color:lightgreen">${rmodule.repeat("Hello jquery")}</h1>`))
  • 使用添加的包
    index.js中使用import导入包,然后使用jquery
import rmodule from "./repeat"
import $ from "jquery"
$("body").append($(`<h1 style="color:lightgreen">${(()=>"Hello jquery")()}</h1>`))
$("body").append($(`<h1 style="color:lightgreen">${rmodule.repeat("Hello jquery")}</h1>`))

由于import $ from "jquery""jquery"不是真实路径,所以还需要编译项目。

编译项目

1.babel编译器

  • 添加编译器
    在命令行中运行npm install -D @babel/core @babel/cli @babel/preset-env,这将会添加一个叫babel的es6编译器到开发时依赖中
{
  "name": "npm-project",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/cli": "^7.24.5",
    "@babel/core": "^7.24.5",
    "@babel/preset-env": "^7.24.5"
  },
  "dependencies": {
    "jquery": "^3.7.1"
  }
}

  • 添加编译器的配置文件
    在项目的根目录下创建一个命名为 babel.config.js 的配置文件
const presets = [
  [
    "@babel/preset-env",
    {
      targets: {
        edge: "17",
        firefox: "60",
        chrome: "67",
        safari: "11.1",
      },
      useBuiltIns: "usage",
      corejs: "3.6.4",
    },
  ],
];

module.exports = { presets };

image

  • 编译项目
    在项目文件中添加此命令"scripts": {"build": "babel src --out-dir lib"}
{
  "name": "npm-project",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "babel src --out-dir lib"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/cli": "^7.24.5",
    "@babel/core": "^7.24.5",
    "@babel/preset-env": "^7.24.5"
  },
  "dependencies": {
    "jquery": "^3.7.1"
  }
}

然后运行此命令npm run build,使用babel编译器,将src目录中的文件编译为es2015,输出到lib目录。
image

  • 评价
    就编译结果看。babel扫描了src目录下的所有js文件,但只进行了源代码编译,和源码的链接。也就说只做了编译器的功能,没有做依赖包的链接的工作。真是服了!

2.使用webpack

为了解决这个问题,我们换成webpack
运行命令npm install -D webpack webpack-cli添加开发时依赖。同时添加pack命令

{
  "name": "npm-project",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "babel src --out-dir lib",
    "pack": "webpack"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/cli": "^7.24.5",
    "@babel/core": "^7.24.5",
    "@babel/preset-env": "^7.24.5",
    "webpack": "^5.91.0",
    "webpack-cli": "^5.1.4"
  },
  "dependencies": {
    "jquery": "^3.7.1"
  }
}

  • 添加webpack配置文件
    在根目录下添加webpack.config.js配置文件
const path=require("path");
module.exports={
    mode:"development",
    entry:"./src/index.js",
    output:{
        filename:"dist.js",
        path:path.resolve(__dirname,"dist")
    }
}
  • 编译
    运行命令npm run pack。根目录下出出现打包的文件。jquery也被连接到了最终的文件中。
    image

运行项目

index.html的js链接换一下

<!DOCTYPE html>
<html>
    <header>
        <title>入口HTML</title>
    </header>
    <!-- <script type="module" src="./src/index.js"></script> -->
    <script type="module" src="./dist/dist.js"></script>
    <body>
        <h1>
            Hello World
        </h1>
    </body>
</html>

然后用live server扩展在此文件上运行一个web服务器
image

标签:npm,jquery,项目,创建,js,webpack,添加,babel
From: https://www.cnblogs.com/ggtc/p/18172537

相关文章

  • K8S 创建Spring-boot项目并进行项目启动与访问
     ##Spring-boot 的helloworld项目packagecom.example.demo;importjava.time.LocalDateTime;importjava.time.format.DateTimeFormatter;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestMappi......
  • 网友开放的开源项目:网页版的A*算法可视化演示程序
    相关项目:https://xueqiaoxu.me/#projects项目介绍:AJavaScriptpath-findinglibraryforgridbasedgames.Italsocomesalongwithaninteractivevisualizationofnumerousstrategies.项目地址:https://github.com/qiao/PathFinding.js演示地址:https://qia......
  • MySQL-08.索引的创建和设计原则
    C-08.索引的创建和设计原则1.索引的声明和使用1.1索引的分类MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。从功能逻辑上分类,索引主要有4种,分别是普通索引,唯一索引,主键索引,全文索引。按照物理实现方式,索引可以分为2种,聚簇索引和非聚簇......
  • 解决创建SpringBoot工程加载较慢的问题
    设置ServerURL将https://start.spring.io改为https://start.aliyun.com如图所示:启动演示如图所示,启动成功......
  • ssm项目2023年最新所需要的所有依赖,成套亲测包能用
    今天下午研究了一下午报错结果就是好多最新版的依赖版本不兼容的问题,换了这套直接就跑起来了烦的很1<dependencies>2<!--SpringFramework-->3<dependency>4<groupId>org.springframework</groupId>5<artifactId>spring-context</art......
  • 玄学野路子项目,探秘解析
    玄学这玩意太暴利,很难掌握度,稍不注意干大了,就容易踩缝纫机。但是很多人耐不住心里痒痒,因为这破玩意太他妈赚钱了。如果实在想搞,胆子又小,那就卖点小道具,几十块的东西,别人也懒得搭理咱。比如这个: 这个直播间打造的真是绝了,整个直播间的场景和话术,没有任何涉及封建迷信的地方。......
  • 同城影视会员掘金项目,一单利润99+!
    现在很多电视都是需要升级会员后才能看,开通会员的价格普遍是一年300元左右,不是所有人都愿意接受这个价格。 针对这个市场,行业内就衍生出了这个项目,原理就是通过在短视频平台发布电视不用充会员的内容,引流到私域进行变现。 说白了,这就是一个信息差的生意,在短视频平台发布看电......
  • Vue入门到关门之Vue项目工程化
    一、创建Vue项目1、安装node环境官网下载,无脑下一步,注意别放c盘就行Node.js—RunJavaScriptEverywhere(nodejs.org)需要两个命令npm---->pipnode--->python装完检查一下,helloworld检测,退出crtl+c2、搭建vue项目环境装cnpm这个包,下载东西会快很多,装模块......
  • 从零开始:Django项目的创建与配置指南
    title:从零开始:Django项目的创建与配置指南date:2024/5/218:29:33updated:2024/5/218:29:33categories:后端开发tags:DjangoWebDevPythonORMSecurityDeploymentOptimizationDjango简介:Django是一个开源的高级PythonWeb框架,由法国人GuidoZempe于2003年......
  • db.create_all() 报错上下文?flask_sqlalchemy创建数据库找不到上下文?
    问题报错:RuntimeError:Workingoutsideofapplicationcontext.Thistypicallymeansthatyouattemptedtousefunctionalitythatneededthecurrentapplication.Tosolvethis,setupanapplicationcontextwithapp.app_context().Seethedocumentationform......