晴明的博客园 GitHub      CodePen      CodeWars     

[web] npm 、webpack 、 babel

#npm publish

npm init
npm adduser
npm publish

 

-f 或 --force 强制install或 publish

 

提升版本号

```

npm version patch

```

 

 ```

major 主要更新
x.0.0

minor 次要更新
0.x.0

patch 补丁
0.0.x

prerelease 预览版
0.0.0-x

 

```

 

 

```

1.1.1:精确下载安装1.1.1版本的包
>、<=、>、>=1.1.1:分别表示下载安装大于、小于等于、大于等于1.1.1版本的包
1.0.1-1.1.1:表示版本范围是包含1.0.1到1.1.1版本的包
~1.1.1:表示尽量采用靠近1.1.1版本的包,但可用的包版本范围是1.1.1-0到1.1.x-x版本的包
~1.1:表示下载安装1.1.x-x版本的包
~1:表示下载安装1.x.x-x版本的包
^1.1.1:表示包版本范围是1.1.1到1.x.x-x
^0.1.1:表示包版本范围是1.1.1到1.1.x-x
^1.1:表示包版本范围是1.1.x-x到1.x.x-x
^1:表示包版本范围是1.x.x-x
空格、x、*:表示任意版本即可
两个版本选择器间,空格表示and关系,||表示or关系。

```

 

使用镜像

npm config set registry https://registry.npm.taobao.org --global
npm config set disturl https://npm.taobao.org/dist --global

中国镜像站: http://registry.cnpmjs.org
官方站: http://registry.npmjs.org

淘宝镜像:https://registry.npm.taobao.org/

 

删除镜像

npm config delete registry
npm config delete disturl

或者

npm config edit

进行编辑

 

 

使用定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:
//不推荐用
npm install -g cnpm --registry=https://registry.npm.taobao.org

 

#20160603

npm install webpack -g

npm install webpack --save-dev
npm i webpack --save-dev //也可以这么写,i是install的简写

A prettier output:
webpack --progress --colors

Watch mode:
webpack --progress --colors --watch


npm install react --save-dev
npm install react-dom --save-dev

npm install babel-preset-react --save-dev
npm install babel-core --save-dev
npm install babel-loader --save-dev
npm install babel-preset-es2015 --save-dev  //es6
npm i babel-core babel-loader babel-preset-es2015 babel-preset-react --save-dev

npm install --save-dev babel-preset-stage-1  --save-dev
npm install babel-plugin-transform-class-properties --save-dev  //为了支持ES6的class以及其他非标准化的语法

npm i redux react-redux --save-dev //redux

npm i css-loader style-loader --save-dev  //加载CSS文件
npm i file-loader url-loader --save-dev  //加载图片

npm i html-webpack-plugin --save-dev  //创建HTML文件插件
npm i open-browser-webpack-plugin --save-dev  //编译后创建本地服务器,然后自动在浏览器打开HTML插件。这个插件感觉没卵用

npm i bundle-loader --save-dev //单独打包?

npm i jquery --save-dev  //jq

npm i antd --save-dev  // ant-design

npm install webpack-dev-server -g    //这里老是出错,但是不装貌似又不行
npm install webpack-dev-server  --save-dev

webpack-dev-server  //虚拟运行。热编译JS部分
webpack   //实际打包
http://localhost:8080/webpack-dev-server

两种方式 Hot Module Replacement
①运行命令
webpack-dev-server --hot --inline 
②config 里 配置 entry等

npm i react-router --save-dev  //安装react-router

npm install webpack react react-dom babel-core babel-preset-react babel-loader babel-preset-es2015 --save-dev
npm install webpack webpack-dev-server react react-dom babel-core babel-preset-react babel-loader babel-preset-es2015 --save-dev

webpack-dev-server --progress --colors

echo { "presets": ["react"] } > .babelrc

or in package.json
  "babel": {
    "presets": ["react"]
  }

  
  webpack.config.js
module.exports = {
    entry: "./main.js",
    output: {
        path: __dirname,
        filename: "bundle.js"
    },
    module: {
        loaders: [
            
            {test: /\.js$/, loader: "babel"}
        ]
    }
};

module.exports = {
    entry: './index.jsx',
    output: {
        filename: 'bundle.js'
    },
    module: {
        loaders: [{
            test: /\.css$/,
            loader: 'style-loader!css-loader'
        }, {
            test: /\.jsx?$/,
            exclude: /node_modules/,
            loader: 'babel-loader'
        }]
    }
};

 

 

 

 

 

webpack

 

npm install webpack -g
npm install webpack --save-dev
npm install css-loader style-loader --save-dev  //引入css
npm install url-loader --save-dev  //引入img


webpack

A prettier output
webpack --progress --colors

Watch mode
webpack --progress --colors --watch

Development server:
npm install webpack-dev-server --save-dev  //本地环境

webpack-dev-server --port 82 --hot --inline  //?


webpack-dev-server --progress --colors
http://localhost:8080/webpack-dev-server/bundle

 

 

 

webpack.config.js
module.exports = {
    entry: "./entry.js",
    output: {
        path: __dirname,
        filename: "bundle.js"
    },
    module: {
        loaders: [
            { test: /\.css$/, loader: "style!css" }
        ]
    }
};

#

module.exports = {
    entry: "./index.js",
    output: {
        path: __dirname,
        filename: "bundle.js"
    },
    module: {
        loaders: [
            { test: /\.css$/, loader: "style!css" }
        ],
        loaders: [
            { test: /\.png$/, loader: "url" }
        ]
    }
};

 

#

//webpack.config.js
const path = require('path');

const PATHS = {
    app: path.join(__dirname, 'src'),
    build: path.join(__dirname, 'build')
};

module.exports = {
    devServer: {
        historyApiFallback: true,
        hot: true,
        inline: true,
        progress: true,
        stats: 'errors-only',
        host: '0.0.0.0',
        port: 3000,
        publicPath: '/build/'
    },
    entry: PATHS.app,
    output: {
        path: PATHS.build,
        filename: 'bundle.js'
    },
    resolve: {
        root: [path.resolve(__dirname, 'src'), path.resolve(__dirname, 'node_modules')],
        extensions: ['', '.js', '.jsx']
    },
    module: {
        loaders: [{
            test: /\.css$/,
            loaders: ['style', 'css', 'postcss'],
            include: PATHS.app
        }, {
            test: /\.jsx?$/,
            loader: 'babel',
            include: PATHS.app
        }, {
            test: /\.(eot|woff|woff2|ttf|svg|png|jpg)$/,
            loader: 'url-loader?limit=30000&name=[name]-[hash].[ext]'
        }]
    }
};

#

//.babelrc
{
  "presets": [
    "stage-0",
    "react",
    "es2015"
  ],
  "plugins": [
    "transform-class-properties"
  ],
  "env": {
    "development": {}
  }
}

 

#

const path = require('path');
const autoprefixer = require('autoprefixer');
const webpack = require('webpack');
const ExtractTextPlugin = require("extract-text-webpack-plugin");
const isDev = (process.env.NODE_ENV === 'development');


const PATHS = {
    app: path.join(__dirname, 'src'),
    node_modules: path.join(__dirname, 'node_modules'),
    antd: path.join(__dirname, 'node_modules/antd'),
    build: path.join(__dirname, 'build')
};

module.exports = {
    devServer: {
        historyApiFallback: true,
        hot: true,
        inline: true,
        progress: true,
        host: '0.0.0.0',
        port: 3000
    },
    entry: PATHS.app,
    output: {
        path: PATHS.build,
        filename: 'bundle.js',
        publicPath: 'build/'
    },
    resolve: {
        root: [path.resolve(__dirname, 'src'), path.resolve(__dirname, 'node_modules')],
        extensions: ['', '.js', '.jsx', '.styl']
    },
    plugins: [
        new webpack.optimize.CommonsChunkPlugin("commons", "commons.js")
        //new webpack.optimize.UglifyJsPlugin(),
        //isDev ? new ExtractTextPlugin("app.css", {allChunks: true}) : new ExtractTextPlugin("app.css", {allChunks: true})
    ],
    module: {
        loaders: [{
            test: /\.styl$/,
            loader: "style-loader!css-loader!postcss-loader!stylus-loader"
        }, {
            test: /\.css$/,
            loader: "style-loader!css-loader!postcss-loader"
        }, {
            test: /\.jsx?$/,
            loader: 'babel',
            include: PATHS.app
        }, {
            test: /\.(eot|woff|woff2|ttf|otf|svg|png|jpg)$/,
            loader: 'url-loader?limit=30000&name=[name]-[hash].[ext]'
        }, {
            test: /\.json$/,
            loader: 'json'
        }]
    },
    postcss: [autoprefixer({browsers: ['> 5%']})]
};

 

 

Babel

 

Babel will look for a .babelrc in the current directory of the file being transpiled. If one does not exist, it will travel up the directory tree until it finds either a .babelrc, or a package.json with a "babel": {} hash within.

 

npm install webpack -g
npm install webpack --save-dev

npm install react --save-dev
npm install react-dom --save-dev
npm install babel-preset-react --save-dev
npm install babel-core --save-dev
npm install babel-loader --save-dev


echo { "presets": ["react"] } > .babelrc

or in package.json
  "babel": {
    "presets": ["react"]
  }

 
webpack.config.js
module.exports = {
    entry: "./main.js",
    output: {
        path: __dirname,
        filename: "bundle.js"
    },
    module: {
        loaders: [
            
            {test: /\.js$/, loader: "babel"}
        ]
    }
};

 

#

 

var path = require('path');

module.exports = {  
  entry: path.resolve(__dirname, '../src/client/scripts/client.js'),
  output: {
    path: path.resolve(__dirname, '../dist'),
    filename: 'bundle.js'
  },

  module: {
    loaders: [
      {
        test: /src\/.+.js$/,
        exclude: /node_modules/,
        loader: 'babel'
      }
    ]
  }
};

 

 

1、npm install moduleNames:安装Node模块
安装完毕后会产生一个node_modules目录,其目录下就是安装的各个node模块。

node的安装分为全局模式和本地模式。
一般情况下会以本地模式运行,包会被安装到和你的应用程序代码的本地node_modules目录下。
在全局模式下,Node包会被安装到Node的安装目录下的node_modules下。

全局安装命令为$npm install -g moduleName。
获知使用$npm set global=true来设定安装模式,$npm get global可以查看当前使用的安装模式。

示例:
npm install express
默认会安装express的最新版本,也可以通过在后面加版本号的方式安装指定版本,如npm install express@3.0.6

npm install <name> -g
将包安装到全局环境中

但是代码中,直接通过require()的方式是没有办法调用全局安装的包的。全局的安装是供命令行使用的,就好像全局安装了vmarket后,就可以在命令行中直接运行vm命令

npm install <name> --save
安装的同时,将信息写入package.json中项目路径中如果有package.json文件时,直接使用npm install方法就可以根据dependencies配置安装所有的依赖包,这样代码提交到github时,就不用提交node_modules这个文件夹了。

2、npm view moduleNames:查看node模块的package.json文件夹
注意事项:如果想要查看package.json文件夹下某个标签的内容,可以使用$npm view moduleName labelName

3、npm list:查看当前目录下已安装的node包
注意事项:Node模块搜索是从代码执行的当前目录开始的,搜索结果取决于当前使用的目录中的node_modules下的内容。$ npm list parseable=true可以目录的形式来展现当前安装的所有node包

4、npm help:查看帮助命令

5、npm view moudleName dependencies:查看包的依赖关系

6、npm view moduleName repository.url:查看包的源文件地址

7、npm view moduleName engines:查看包所依赖的Node的版本

8、npm help folders:查看npm使用的所有文件夹

9、npm rebuild moduleName:用于更改包内容后进行重建

10、npm outdated:检查包是否已经过时,此命令会列出所有已经过时的包,可以及时进行包的更新

11、npm update moduleName:更新node模块

12、npm uninstall moudleName:卸载node模块

13、一个npm包是包含了package.json的文件夹,package.json描述了这个文件夹的结构。访问npm的json文件夹的方法如下:
$ npm help json
此命令会以默认的方式打开一个网页,如果更改了默认打开程序则可能不会以网页的形式打开。

14、发布一个npm包的时候,需要检验某个包名是否已存在
$ npm search packageName

15、npm init:会引导你创建一个package.json文件,包括名称、版本、作者这些信息等

16、npm root:查看当前包的安装路径
npm root -g:查看全局的包的安装路径

17、npm -v:查看npm安装的版本

posted @ 2016-05-10 12:03  晴明桑  阅读(538)  评论(0)    收藏  举报